/*
  海港（port）
  题目描述
    小 K 是一个海港的海关工作人员，每天都有许多船只到达海港，船上通常有很多来自不同国家的乘客。
    小 K 对这些到达海港的船只非常感兴趣，他按照时间记录下了到达海港的每一艘船只情况；
      对于第 i 艘到达的船，他记录了这艘船到达的时间 ti (单位：秒)，船上的乘客数 ki，以及每名乘客的国籍 x(i,1), x(i,2),…，x(i,k);。

    小 K 统计了 n 艘船的信息，希望你帮忙计算出以每一艘船到达时间为止的 24 小时(24 小时 = 86400 秒）
      内所有乘船到达的乘客来自多少个不同的国家。
    形式化地讲，你需要计算 n 条信息。
    对于输出的第 i 条信息，你需要统计满足 ti - 86400 < tp <= ti 的船只 p，在所有的 x(p,j)中，总共有多少个不同的数。
  输入
    第一行输入一个正整数 n，表示小 K 统计了 n 艘船的信息。
    接下来 n 行，每行描述一艘船的信息：
      前两个整数 ti 和 ki 分别表示这艘船到达海港的时间和船上的乘客数量，
      接下来 ki 个整数 x(i, j) 表示船上乘客的国籍。
    保证输入的 ti 是递增的，单位是秒；表示从小 K 第一次上班开始计时，这艘船在第 ti 秒到达海港。
  输出
    输出 n 行，第 i 行输出一个整数表示第 i 艘船到达后的统计信息。
  样例1
    输入
      3
      1 4 4 1 2 2
      2 2 2 3
      10 1 3
    输出
      3
      4
      4
  样例2
    输入
      4
      1 4 1 2 2 3
      3 2 2 3
      86401 2 3 4
      86402 1 5
    输出
      3
      3
      3
      4
  说明
   【样例解释1】
      第一艘船在第 1 秒到达海港，最近 24 小时到达的船是第一艘船，共有 4 个乘客，
        分别是来自国家 4,1,2,2，共来自 3 个不同的国家；
      第二艘船在第 2 秒到达海港，最近 24 小时到达的船是第一艘船和第二艘船，共有 4 + 2 = 6 个乘客，
        分别是来自国家 4,1,2,2,2,3，共来自 4 个不同的国家；
      第三艘船在第 10 秒到达海港，最近 24 小时到达的船是第一艘船、第二艘船和第三艘船，共有 4 + 2 + 1 = 7 个乘客，
        分别是来自国家 4,1,2,2,2,3,3，共来自 4 个不同的国家。
   【样例解释2】
      第一艘船在第 1 秒到达海港，最近 24 小时到达的船是第一艘船，
        共有 4 个乘客，分别是来自国家 1,2,2,3，共来自 3 个不同的国家。
      第二艘船在第 3 秒到达海港，最近 24 小时到达的船是第一艘船和第二艘船，
        共有 4+2=6 个乘客，分别是来自国家 1,2,2,3,2,3，共来自 3 个不同的国家。
      第三艘船在第 86401 秒到达海港，最近 24 小时到达的船是第二艘船和第三艘船，
        共有 2+2=4 个乘客，分别是来自国家 2,3,3,4，共来自 3 个不同的国家。
      第四艘船在第 86402 秒到达海港，最近 24 小时到达的船是第二艘船、第三艘船和第四艘船，
        共有 2+2+1=5 个乘客，分别是来自国家 2,3,3,4,5，共来自 4 个不同的国家。
   【数据范围】
      1 ≤ n ≤ 10^5,
      ∑ki ≤ 3 ∗ 10^5,
      1 ≤ xi,j ≤ 10^5,
      1 ≤ ti ≤ 10^9
   【来源】
      noip2016 普及组复赛第 3 题
   【特别说明】
      此题要求最大运行时间为 1s, 之前采用过其它几种方法，均导致运行超时!
      下面的这种方法非常巧妙，后续可以反复看一下解法并加深理解, 可以为后续解其它题提供借鉴!
*/

#include <bits/stdc++.h>

using namespace std;

/* 用该数据结构记录船员的相关信息 */
struct str {
    int tim; // 船员的到港时间
    int gj;  // 船员的国籍
};

queue <str> q1; // 表示船员的队列, 先到港的船员先进队列

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    int n, t, r, x;
    int a[100005] = {}; // a[i] (i > 1) 表示国籍等于 i 的船员的人数
    int ans = 0;

    cin >> n;
    for (int i = 1; i <= n; i++) {
        /*
          针对一轮循环进行如下处理:
            记录第 i 艘船到港时的信息，并统计这艘船和这艘船到港前 24 小时内到港的所有船上的船员一共有多少种国籍
         */

        cin >> t >> r;

        /*
          1). 将队列中所有"到港时间和当前这艘船的到港时间间隔大于等于 24 小时"的船员 pop 出队列 q1！
          说明:
            由于题目中明确说明"输入的 ti 是递增的", 也就是说往命令行先输入的船的到港时间一定比后输入的船的到港时间要早!
            到港时间早的船员比到港时间晚的船员先进队列，并且队列是先进先出,
            所以我们每次检查的时候只用检查队头的船员就可以了，如果时间差大于等于24小时，则将队头的船员 pop出去!
            依次类推, 循环处理，直到队头船员的到港时间和当前这艘船的到港时间之差不到 24 小时!
            如果队头的船员的到港时间和当前这艘船的到港时间相差不到 24 小时，
            那么队列中的其他船员的到港时间和当前这艘船的到港时间之差肯定不到 24 小时!
         */
        while (!q1.empty()) { // 注意: 访问队头元素前，一定要先判断队列是否为空!
            // 检查队列头的船员的到港时间和当前这艘船的到岗时间相差是否大于等于 24 小时
            str ai = q1.front();
            if (ai.tim + 86400 <= t) {
                q1.pop();
                a[ai.gj]--;
                if (a[ai.gj] == 0) {
                    ans--;
                }
                continue;
            }
            break;
        }

        /* 2). 使当前这艘船的船员进队列 q1! */
        for (int j = 1; j <= r; j++) {
            cin >> x;
            str m;
            m.gj = x;
            m.tim = t;
            q1.push(m); // 构建船员的基本信息(str变量m)，并将其 push 进队列 q1
            a[x]++;
            if (a[x] == 1) {
                ans++;
            }
        }
        cout << ans << endl;
    }

    return 0;
}